const app = getApp();

Page({
    data: {
        tab: 'all',
        workOrders: []
    },
    // 切换tab的函数
    switchTab: function (param) {
        let tab = this._getTabValue(param);
        this.setData({ tab });

        const token = app.globalData.token;
        if (!token) {
            wx.showToast({
                title: '未获取到有效token，请先登录',
                icon: 'none'
            });
            return;
        }

        const header = this._getHeader(token);
        const url = 'http://8.140.225.174:5000/worer_faulishow';

        return this.sendGetWorkOrdersRequest(url, header).then((resData) => {
            if (resData.code === 200 && resData.data) {
                const processedWorkOrders = this._processWorkOrders(resData.data);
                const filteredWorkOrders = this._filterWorkOrdersByTab(processedWorkOrders, tab);
                this.setData({ workOrders: filteredWorkOrders });
            } else {
                wx.showToast({
                    title: '获取工单失败',
                    icon: 'none'
                });
            }
        }).catch((error) => {
            console.error('网络错误：', error);
            wx.showToast({
                title: '网络错误',
                icon: 'none'
            });
        });
    },
    // 辅助函数：获取tab值
    _getTabValue(param) {
        if (typeof param === 'object' && param.currentTarget) {
            return param.currentTarget.dataset.tab;
        }
        return param;
    },
    // 辅助函数：构建请求头
    _getHeader(token) {
        return {
            'content-type': 'application/x-www-form-urlencoded',
            'token': token
        };
    },
    // 辅助函数：处理工单数据格式
    _processWorkOrders(data) {
        return data.map(order => ({
            orderId: order.ListId,
            faultType: order.Faulttype,
            faultArea: order.FaultArea,
            customerPhone: order.CusPhone,
            orderStatus: order.ListState
        }));
    },
    // 辅助函数：根据tab筛选工单数据
    _filterWorkOrdersByTab(workOrders, tab) {
        if (tab === 'inprogress') {
            tab = '维修中';
        } else if (tab === 'completed') {
            tab = '已完成';
        } else if (tab === 'pending') {
            tab = '待维修';
        }
        if (tab!== 'all') {
            return workOrders.filter(order => order.orderStatus === tab);
        }
        return workOrders;
    },
    // 发送获取工单数据请求
    sendGetWorkOrdersRequest: function (url, header) {
        return new Promise((resolve, reject) => {
            wx.request({
                url: url,
                method: 'POST',
                header: header,
                success: function (res) {
                    console.log('网络请求成功，返回数据：', res);
                    if (res.data.code === 200) {
                        resolve(res.data);
                    } else {
                        reject(res.data);
                    }
                },
                fail: (err) => {
                    console.log('网络请求失败，错误信息：', err);
                    reject(err);
                }
            });
        });
    },
    // 处理“开始工作”按钮点击事件
    startWork: function (e) {
        const orderId = e.currentTarget.dataset.orderId;
        wx.showModal({
            title: '是否开始工作',
            content: '确认后将开始对此工单进行维修工作',
            success: (res) => {
                if (res.confirm) {
                    const url = 'http://8.140.225.174:5000/fultlist_state_update';
                    const data = { ListId: orderId.toString() };
                    wx.request({
                        url: url,
                        method: 'POST',
                        header: {
                            'content-type': 'application/x-www-form-urlencoded'
                        },
                        data: data,
                        success: (res) => {
                            if (res.data.code === 200) {
                                this.switchTab('inprogress');
                            } else {
                                console.error('更新工单状态失败，错误信息：', res.data.message);
                                wx.showToast({
                                    title: '更新工单状态失败',
                                    icon: 'none'
                                });
                            }
                        },
                        fail: (err) => {
                            console.error('网络错误，无法更新工单状态，错误信息：', err);
                            wx.showToast({
                                title: '网络错误，无法更新工单状态',
                                icon: 'none'
                            });
                        }
                    });
                }
            }
        });
    },
    // 处理“完成维修”按钮点击事件
    finishWork: function (e) {
        const orderId = e.currentTarget.dataset.orderId;
        wx.showModal({
            title: '是否完成维修',
            content: '确认后将此工单标记为已完成',
            success: (res) => {
                if (res.confirm) {
                    const url = 'http://8.140.225.174:5000/fultlist_state_update';
                    const data = { ListId: orderId.toString() };
                    wx.request({
                        url: url,
                        method: 'POST',
                        header: {
                            'content-type': 'application/x-www-form-urlencoded'
                        },
                        data: data,
                        success: (res) => {
                            if (res.data.code === 200) {
                                this.switchTab('completed');
                            } else {
                                console.error('更新工单状态失败，错误信息：', res.data.message);
                                wx.showToast({
                                    title: '更新工单状态失败',
                                    icon: 'none'
                                });
                            }
                        },
                        fail: (err) => {
                            console.error('网络错误，无法更新工单状态，错误信息：', err);
                            wx.showToast({
                                title: '网络错误，无法更新工单状态',
                                icon: 'none'
                            });
                        }
                    });
                }
            }
        });
    },
    // 跳转到详情页，传递orderId参数
    goToDetailPage: function (e) {
        const orderId = e.currentTarget.dataset.orderId;
        wx.navigateTo({
            url: '/pages/worker/detail/detail?orderId=' + orderId
        });
    },
    // 页面生命周期函数 - 监听页面加载
    onLoad: function (options) {
        this.switchTab('all');
    },
    // 页面生命周期函数 - 监听页面初次渲染完成
    onReady: function () {
    },
    // 页面生命周期函数 - 监听页面显示
    onShow: function () {
    },
    // 页面生命周期函数 - 监听页面隐藏
    onHide: function () {
    },
    // 页面生命周期函数 - 监听页面卸载
    onUnload: function () {
    },
    // 页面相关事件处理函数 - 监听用户下拉动作（用于下拉刷新功能）
    onPullDownRefresh: function () {
        this.switchTab(this.data.tab);
        wx.stopPullDownRefresh();
    },
    // 页面上拉触底事件的处理函数
    onReachBottom: function () {
    },
    // 用户点击右上角分享
    onShareAppMessage: function () {
        return {
            title: '分享我的工单页面',
            path: '/pages/worker/myworkorders/myworkorders'
        };
    }
})